package org.sdfc.model.attr

import com.documentum.fc.common.IDfId
import com.documentum.fc.common.IDfTime

/** An attribute repeating of the data model.
 */
trait RepeatingAttribute[+T] extends Attribute[T] {
  
  /** AttrType of the Attribute, refined to be a RepeatingAttrType. */
  override def attrType : RepeatingAttrType
  
  /** True, by definition of this. */
  final def isRepeating = false
  
}


/** An attribute repeating/boolean of the data model.
 */
trait RepeatingBooleanAttribute extends RepeatingAttribute[Boolean] {
  
  /** repeating/boolean AttrType, by definition of this. */
  final def attrType = RepeatingBooleanAttrType
  
}

/** An attribute repeating/int of the data model.
 */
trait RepeatingIntAttribute extends RepeatingAttribute[Int] {
  
  /** repeating/int AttrType, by definition of this. */
  final def attrType = RepeatingIntAttrType
  
}

/** An attribute repeating/string of the data model.
 */
trait RepeatingStringAttribute extends RepeatingAttribute[String] {
  
  /** repeating/string AttrType, by definition of this. */
  final def attrType = RepeatingStringAttrType
  
}

/** An attribute repeating/id of the data model.
 */
trait RepeatingIdAttribute extends RepeatingAttribute[IDfId] {
  
  /** repeating/id AttrType, by definition of this. */
  final def attrType = RepeatingIdAttrType
  
}

/** An attribute repeating/time of the data model.
 */
trait RepeatingTimeAttribute extends RepeatingAttribute[IDfTime] {
  
  /** repeating/time AttrType, by definition of this. */
  final def attrType = RepeatingTimeAttrType
  
}

/** An attribute repeating/double of the data model.
 */
trait RepeatingDoubleAttribute extends RepeatingAttribute[Double] {
  
  /** repeating/double AttrType, by definition of this. */
  final def attrType = RepeatingDoubleAttrType
  
}